

<!DOCTYPE html>
<html lang="zh-CN" data-default-color-scheme=auto>



<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="https://dwj666.cn/%E6%A3%AE%E6%9E%97.png">
  <link rel="icon" href="https://dwj666.cn/%E6%A3%AE%E6%9E%97.png">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="软考UML基本知识类图、对象图、序列图等">
  <meta name="author" content="John Doe">
  <meta name="keywords" content="">
  <meta name="description" content="软考UML基本知识类图、对象图、序列图等">
<meta property="og:type" content="article">
<meta property="og:title" content="UML基本知识">
<meta property="og:url" content="http://example.com/2023/02/10/UML%E5%92%8C%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/index.html">
<meta property="og:site_name" content="藏色的个人博客">
<meta property="og:description" content="软考UML基本知识类图、对象图、序列图等">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2023-02-10T03:01:45.630Z">
<meta property="article:modified_time" content="2023-02-10T03:01:46.025Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary_large_image">
  
  <title>UML基本知识 - 藏色的个人博客</title>

  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css@4/github-markdown.min.css" />
  <link  rel="stylesheet" href="/hexo-gujijih/lib/hint/hint.min.css" />

  
    
    
      
      <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@10/styles/github-gist.min.css" />
    
  

  
    <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css" />
  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_kmeydafke9r.css">


<link  rel="stylesheet" href="/hexo-gujijih/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script id="fluid-configs">
    var Fluid = window.Fluid || {};
    var CONFIG = {"hostname":"example.com","root":"/hexo-gujijih/","version":"1.8.12","typing":{"enable":true,"typeSpeed":70,"cursorChar":"_","loop":false},"anchorjs":{"enable":true,"element":"h1,h2,h3,h4,h5,h6","placement":"right","visible":"hover","icon":""},"progressbar":{"enable":true,"height_px":3,"color":"#29d","options":{"showSpinner":false,"trickleSpeed":100}},"copy_btn":true,"image_zoom":{"enable":true,"img_url_replace":["",""]},"toc":{"enable":true,"headingSelector":"h1,h2,h3,h4,h5,h6","collapseDepth":0},"lazyload":{"enable":true,"loading_img":"/img/loading.gif","onlypost":false,"offset_factor":2},"web_analytics":{"enable":false,"baidu":null,"google":null,"gtag":null,"tencent":{"sid":null,"cid":null},"woyaola":null,"cnzz":null,"leancloud":{"app_id":null,"app_key":null,"server_url":null,"path":"window.location.pathname"}},"search_path":"/hexo-gujijih/local-search.xml"};
  </script>
  <script  src="/hexo-gujijih/js/utils.js" ></script>
  <script  src="/hexo-gujijih/js/color-schema.js" ></script>
<meta name="generator" content="Hexo 5.4.0"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand" href="/hexo-gujijih/">
      <strong>藏色的个人博客</strong>
    </a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo-gujijih/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo-gujijih/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo-gujijih/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo-gujijih/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/hexo-gujijih/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" target="_self" href="javascript:;" data-toggle="modal" data-target="#modalSearch" aria-label="Search">
              &nbsp;<i class="iconfont icon-search"></i>&nbsp;
            </a>
          </li>
        
        
          <li class="nav-item" id="color-toggle-btn">
            <a class="nav-link" target="_self" href="javascript:;" aria-label="Color Toggle">&nbsp;<i
                class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="banner" id="banner" parallax=true
         style="background: url('https://dwj666.cn/dmfj.jpg') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="page-header text-center fade-in-up">
            <span class="h2" id="subtitle" title="UML基本知识">
              
            </span>

            
              <div class="mt-3">
  
  
    <span class="post-meta">
      <i class="iconfont icon-date-fill" aria-hidden="true"></i>
      <time datetime="2023-02-10 11:01" pubdate>
        2023年2月10日 上午
      </time>
    </span>
  
</div>

<div class="mt-1">
  
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      2.4k 字
    </span>
  

  
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      7 分钟
    </span>
  

  
  
    
      <!-- 不蒜子统计文章PV -->
      <span id="busuanzi_container_page_pv" style="display: none">
        <i class="iconfont icon-eye" aria-hidden="true"></i>
        <span id="busuanzi_value_page_pv"></span> 次
      </span>
    
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid nopadding-x">
  <div class="row nomargin-x">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-x-md">
      <div class="container nopadding-x-md" id="board-ctn">
        <div class="py-5" id="board">
          <article class="post-content mx-auto">
            <!-- SEO header -->
            <h1 style="display: none">UML基本知识</h1>
            
              <p class="note note-info">
                
                  本文最后更新于：2023年2月10日 上午
                
              </p>
            
            <div class="markdown-body">
              <p>软考UML基本知识类图、对象图、序列图等</p>
<span id="more"></span>
<h3 id="UML"><a href="#UML" class="headerlink" title="UML"></a>UML</h3><p><strong>类图</strong>：类图是显示一组类、接口、协作以及它们之间关系的图。类图用于对系统的静态设计视图建模。当对系统的静态视图建模时，通常以下述三种方式之一使用类图：</p>
<p>n对系统的词汇建模 n对简单协作建模 n对逻辑数据库模式建模。 </p>
<p>（注意：物理数据库模式建模采用构件图实现）</p>
<p>总之，类图描述系统的对象类结构，他们显示构成系统的对象类以及这些对象类之间的关系。</p>
<p><strong>对象图</strong>：对象图类似于类图，但并不描述对象类，它们对实际的对象实例建模，显示实例属性的当前值。</p>
<p>**序列图(顺序图)**：序列图以图形化方式描述了在一个用例或操作执行过程中对象如何通过消息互相交互，说明了消息如何在对象之间被发送和接收以及发送的时间顺序。总之，序列图用于按时间顺序描述对象间的交互。</p>
<p><strong>交互图</strong>：对系统的动态进行建模，又分为以下四类：</p>
<p><strong>a. 用例图</strong>：场景的图形化表示，描述了以时间顺序组织的对象之间的交互。提供了控制流随时间推移的清晰的可视化痕迹。(生命线，控制焦点)</p>
<p><strong>b. 通信图</strong>：强调收发消息的对象的结构组织，提供了在协作对象的结构组织的语境中观察控制流的一个清晰的可视化痕迹(路径，顺序号)</p>
<p><strong>c. 交互概览图</strong>：</p>
<p><strong>d. 计时图</strong>：</p>
<p><strong>状态图</strong>：显示一个由状态、转换、事件和活动组成的状态机。用状态图说明系统的动态视图。状态图对接口、类或协作的行为建模是非常重要的。状态图强调一个对象按事件次序发生的行为。状态图用于对一个特定的对象的动态行为建模，说明了一个对象的生命周期—对象可以经历的各种状态，以及引起对象从一个状态向另一个状态转换的事件。</p>
<p><strong>活动图</strong>：显示从活动到活动的流。活动图显示了一组活动，从活动到活动的顺序流或分支流，以及发生动作的对象或动作所施加的对象。用活动图说明系统的动态视图。活动图对系统的功能建模是非常重要的，它强调对象之间的控制流。对系统的功能建模和业务流程建模特别重要，并强调对象间的控制流程。</p>
<p> <strong>构件图</strong>：构件图用来以图形化的方式描述系统的物理结构，它可以用来显示程序代码如何分解成模块。</p>
<p><strong>组合结构图</strong>：</p>
<p><strong>部署图</strong>：部署图描述系统中硬件和软件的物理架构，它描述构成系统架构的软件结构、处理器和设备。</p>
<h3 id="设计模式"><a href="#设计模式" class="headerlink" title="设计模式"></a>设计模式</h3><h4 id="创建型设计模式：与对象的创建有关"><a href="#创建型设计模式：与对象的创建有关" class="headerlink" title="创建型设计模式：与对象的创建有关"></a>创建型设计模式：与对象的创建有关</h4><h5 id="抽象工厂-Abstract-Factory-。"><a href="#抽象工厂-Abstract-Factory-。" class="headerlink" title="抽象工厂(Abstract Factory)。"></a>抽象工厂(Abstract Factory)。</h5><p>提供创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。 </p>
<h5 id="生成器-Builder-。"><a href="#生成器-Builder-。" class="headerlink" title="生成器(Builder)。"></a>生成器(Builder)。</h5><p>将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。</p>
<p>工厂方法(Factory Method)。</p>
<p>定义一个用于创建对象的接口，让子类决定将哪一个类实例化,工厂方法使一个类的实例化延迟到其子类。</p>
<h5 id="原型-Prototype-。"><a href="#原型-Prototype-。" class="headerlink" title="原型(Prototype)。"></a>原型(Prototype)。</h5><p>用原型实例指定创建对象的种类，并且通过拷贝这个原型来创建新的对象。</p>
<h5 id="单例-Singleton-。"><a href="#单例-Singleton-。" class="headerlink" title="单例(Singleton)。"></a>单例(Singleton)。</h5><p>保证一个类仅有一个实例，并提供一个访问它的全局访问点。</p>
<h3 id=""><a href="#" class="headerlink" title=""></a></h3><h4 id="结构型设计模式：处理类或对象的组合"><a href="#结构型设计模式：处理类或对象的组合" class="headerlink" title="结构型设计模式：处理类或对象的组合"></a>结构型设计模式：处理类或对象的组合</h4><h5 id="适配器-Adapter"><a href="#适配器-Adapter" class="headerlink" title="适配器(Adapter)"></a>适配器(Adapter)</h5><p>将一个类的接口转换成客户希望的另外一个接口。adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 </p>
<h5 id="桥接-Bridge"><a href="#桥接-Bridge" class="headerlink" title="桥接(Bridge)"></a>桥接(Bridge)</h5><p>将抽象部分与它的实现部分分离，使它们都可以独立地变化。对实现部分的修改不会影响到使用它们的程序。</p>
<h5 id="组合-Composite"><a href="#组合-Composite" class="headerlink" title="组合(Composite)"></a>组合(Composite)</h5><p>将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。 </p>
<h5 id="装饰-Decorator"><a href="#装饰-Decorator" class="headerlink" title="装饰(Decorator)"></a>装饰(Decorator)</h5><p>动态地给一个对象添加一些额外的职责。就扩展功能而言，它比生成子类更为灵活。 </p>
<h5 id="外观模式-Facade"><a href="#外观模式-Facade" class="headerlink" title="外观模式(Facade)"></a>外观模式(Facade)</h5><p>为子系统中的一组接口提供一个一致的界面，Facade 模式定义了一个高层接口，这个接口使得这一子系统更加容易使用。 </p>
<h5 id="享元-Flyweight"><a href="#享元-Flyweight" class="headerlink" title="享元(Flyweight)"></a>享元(Flyweight)</h5><p>运用共享技术有效地支持大量细粒度的对象。 </p>
<h5 id="代理-Proxy"><a href="#代理-Proxy" class="headerlink" title="代理(Proxy)"></a>代理(Proxy)</h5><p>为其他对象提供一个代理以控制对这个对象的访问。</p>
<p><em><strong>*行为型创建模式*</strong></em> ：对类或对象怎样交互和怎样分配职责进行描述</p>
<ol>
<li>责任链(Chain of Responsibility)。</li>
</ol>
<p>为解除请求的发送者和接收者之间耦合，而使多个对象都有机会处理这个请求。将这些对象连成一条链，并沿着这条链传递该请求，直到有一个对象处理它。。 </p>
<ol start="2">
<li>命令(Command)。</li>
</ol>
<p>将一个请求封装为一个对象，从而使我们可用不同的请求对象进行参数化，对请求排队或记录请求日志，以及支持可撤销的操作；命令模式将调用操作的请求对象与知道如何实现该操作的接收对象解耦 </p>
<ol start="3">
<li>解释器(Interpreter)。</li>
</ol>
<p>给定一个语言，定义它的文法的一种表示，并定义一个解释器，该解释器使用该表示来解释语言中的句子。</p>
<ol start="4">
<li>迭代(Iterator)。</li>
</ol>
<p>提供一种方法顺序访问一个聚合对象中各个元素，而又不需暴露该对象的内部表示。</p>
<ol start="5">
<li>中介者(Mediator)。</li>
</ol>
<p>用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用，从而使其耦合松散，而且可以独立地改变它们之间的交互。 </p>
<ol start="6">
<li>备忘录(Memento)。</li>
</ol>
<p>在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。 </p>
<ol start="7">
<li>观察者(Observer)。</li>
</ol>
<p>定义对象间的一种一对多的依赖关系，以便当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并自动刷新。</p>
<ol start="8">
<li>状态(State)。</li>
</ol>
<p>允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。 </p>
<ol start="9">
<li>策略(Strategy)。</li>
</ol>
<p>定义一系列的算法，把它们一个个封装起来，并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。 </p>
<ol start="10">
<li>模板方法(Template Method)。</li>
</ol>
<p>定义一个操作中的算法的骨架，而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 </p>
<ol start="11">
<li>访问者(Visitor)。</li>
</ol>
<p>表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。</p>

            </div>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/hexo-gujijih/categories/%E8%BD%AF%E8%80%83/">软考</a>
                    
                  </div>
                
                
              </div>
              
                <p class="note note-warning">
                  
                    本博客所有文章除特别声明外，均采用 <a target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！
                  
                </p>
              
              
                <div class="post-prevnext">
                  <article class="post-prev col-6">
                    
                    
                      <a href="/hexo-gujijih/2023/02/10/Linux%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%95%B4%E7%90%86%E4%B8%80/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">Linux常用命令整理一</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </article>
                  <article class="post-next col-6">
                    
                    
                      <a href="/hexo-gujijih/2023/02/10/%E7%9F%A5%E8%AF%86%E6%B1%87%E6%80%BB%E6%80%BB%E7%BB%93/">
                        <span class="hidden-mobile">软件设计师知识点总结</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </article>
                </div>
              
            </div>

            
              <!-- Comments -->
              <article class="comments" id="comments" lazyload>
                
                  
                
                
  <div id="twikoo"></div>
  <script type="text/javascript">
    Fluid.utils.loadComments('#comments', function() {
      Fluid.utils.createScript('https://cdn.jsdelivr.net/npm/twikoo@1/dist/twikoo.all.min.js', function() {
        var options = Object.assign(
          {"envId":"blog9528-5gm3bi65f33458fb","region":"ap-shanghai","path":"window.location.pathname"},
          {
            el: '#twikoo',
            path: 'window.location.pathname',
            onCommentLoaded: function() {
              Fluid.plugins.initFancyBox('#twikoo .tk-content img:not(.tk-owo-emotion)');
            }
          }
        )
        twikoo.init(options)
      });
    });
  </script>
  <noscript>Please enable JavaScript to view the comments</noscript>


              </article>
            
          </article>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div class="toc-body" id="toc-body"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    

    
      <a id="scroll-top-button" aria-label="TOP" href="#" role="button">
        <i class="iconfont icon-arrowup" aria-hidden="true"></i>
      </a>
    

    
      <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
    

    
  </main>

  <footer class="text-center mt-5 py-3">
  <div class="footer-content">
     <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a> <i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a> 
  </div>
  
  <div class="statistics">
    
    

    
      
        <!-- 不蒜子统计PV -->
        <span id="busuanzi_container_site_pv" style="display: none">
            总访问量 
            <span id="busuanzi_value_site_pv"></span>
             次
          </span>
      
      
        <!-- 不蒜子统计UV -->
        <span id="busuanzi_container_site_uv" style="display: none">
            总访客数 
            <span id="busuanzi_value_site_uv"></span>
             人
          </span>
      
    
  </div>


  

  
</footer>


  <!-- SCRIPTS -->
  
  <script  src="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.jsdelivr.net/npm/nprogress@0/nprogress.min.css" />

  <script>
    NProgress.configure({"showSpinner":false,"trickleSpeed":100})
    NProgress.start()
    window.addEventListener('load', function() {
      NProgress.done();
    })
  </script>


<script  src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" ></script>
<script  src="https://cdn.jsdelivr.net/npm/bootstrap@4/dist/js/bootstrap.min.js" ></script>
<script  src="/hexo-gujijih/js/events.js" ></script>
<script  src="/hexo-gujijih/js/plugins.js" ></script>

<!-- Plugins -->


  <script  src="/hexo-gujijih/js/local-search.js" ></script>



  
    <script  src="/hexo-gujijih/js/img-lazyload.js" ></script>
  



  



  
    <script  src="https://cdn.jsdelivr.net/npm/tocbot@4/dist/tocbot.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js" ></script>
  
  
    <script  src="https://cdn.jsdelivr.net/npm/anchor-js@4/anchor.min.js" ></script>
  
  
    <script defer src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js" ></script>
  



  <script defer src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>




  <script  src="https://cdn.jsdelivr.net/npm/typed.js@2/lib/typed.min.js" ></script>
  <script>
    (function (window, document) {
      var typing = Fluid.plugins.typing;
      var title = document.getElementById('subtitle').title;
      
      typing(title)
      
    })(window, document);
  </script>















<!-- 主题的启动项 保持在最底部 -->
<script  src="/hexo-gujijih/js/boot.js" ></script>


</body>
</html>
